package panda.natalia.gothread.suspend.instrument.codesample;

/**
 * a simple framework of java fiber
 *
 * 测试可知, private 类似于作用域的概念, 同属一个类文件里的代码 是可以访问private成员和函数的
 *  否则则不可见
 *
 * @Author: scpanda2007
 * @Date: 2019/12/4 10:38
 */
public class TestPrivate {
    private int outerClassVar = 1;

    private int testInner(){
        InnerClass1 ic1 = new InnerClass1();
        ic1.something();
        return 0;
    }

    class InnerClass1 {
        private void something(){
            System.out.println(outerClassVar);
        }

        void defaultSomething(){}
    }

    class InnerClass2 extends InnerClass1 {

//        @Override 这个覆写会编译失败
//        private void something(){}

        @Override
        void defaultSomething(){
//            this.something(); 此方法会调用失败
            super.something(); // 可以使用super访问父类的私有函数
            super.defaultSomething();
        }

    }

    class InnerClass3 {
        void main(){
            InnerClass2 ic = new InnerClass2();
//            ic.something(); 此方法会调用失败
            InnerClass1 ic1 = (InnerClass1) ic;
            ic1.something(); // 可以使用
        }
    }
}
